package org.yzhzc.friend.service.user;

import org.yzhzc.common.core.domain.R;
import org.yzhzc.common.core.domain.vo.LoginUserVO;
import org.yzhzc.friend.domain.user.dto.UserDTO;
import org.yzhzc.friend.domain.user.dto.UserUpdateDTO;
import org.yzhzc.friend.domain.user.vo.UserVO;

public interface IUserService {
    /**
     * 发送验证码
     *
     * @param userDTO 用户信息
     * @return 是否发送成功
     */
    boolean sendCode(UserDTO userDTO);

    /**
     * 验证码登录
     *
     * @param phone 手机号
     * @param code  验证码
     * @return token
     */
    String codeLogin(String phone, String code);

    /**
     * 退出登录
     *
     * @param token 退出登录的 token
     * @return 是否退出成功
     */
    boolean logout(String token);

    /**
     * 通过 token 获取用户信息
     *
     * @param token token
     * @return 用户信息视图对象，包含昵称、头像、性别等信息
     */
    R<LoginUserVO> info(String token);

    /**
     * 通过 token 获取当前用户的详细信息
     *
     * @return 用户信息视图对象，包含昵称、头像、性别等信息
     */
    UserVO detail();

    /**
     * 更新用户信息
     *
     * @param userUpdateDTO 用户信息更新对象，包含昵称、性别、学校、专业、电话、邮箱、微信、个性签名等信息
     * @return 操作结果
     */
    int edit(UserUpdateDTO userUpdateDTO);

    int updateHeadImage(String headImage);
}
